package com.service;


import com.dto.JsonResult;
import com.dto.UserAndRoleDecn;
import com.entity.UserInfo;
import com.vo.UserVo;

import java.util.List;


public interface UserService {


    /**
     * 通过用户名判断用户是否存在
     *
     * @param username 用户名
     * @return
     */

    boolean isExist(String username);

    /**
     * 通过用户名查询用户
     *
     * @param username 用户名
     * @return
     */
    UserInfo findByUsername(String username);

    /**
     * 通过用户名密码查询用户
     *
     * @param username 用户名
     * @param password 密码
     * @return
     */
    boolean get(String username, String password);


    List<UserInfo> findAll();


    /**
     * 登录操作
     * @param name 姓名
     * @param pwd  密码
     * @throws Exception
     */
    JsonResult login(String name, String pwd) throws Exception;


    /**
     * 多表联查 形成自己定义的dto类型
     * @return
     */
    List<UserAndRoleDecn> list();

    /**
     * 更新用户的状态信息
     * @param userInfo
     */
    void updateUserStatus(UserInfo userInfo);

    /**
     * 重置用户密码
     * @param userInfo
     * @return
     */
    UserInfo resetPassword(UserInfo userInfo);

    /**
     * 修改/编辑用户信息
     * @param  userVo
     */
    void editUser(UserVo userVo);

    /**
     * 新增用户
     * @param userVo
     */
    void addUser(UserVo userVo);

    /**
     * 按id查询
     * @param id
     * @return
     */
    boolean findById(Integer id);

    /**
     * 按id查询所有符合的数据
     * @param ids
     * @return
     */
    boolean findByIds(List<Integer> ids);

    /**
     * 批量删除
     * @param ids 批量删除需要的id
     */
    void deleteByIds(List<Integer> ids);

    /**
     * 单删除
     * @param id
     */
    void deleteById(Integer id);

}
